#pragma once
#include <string>
#include "../Level5/Exception.hpp"
namespace Level5
{
	class UnicodeConverter
	{
	public:
		class UnicodeConvertException :Exception
		{
		public:
			UnicodeConvertException();
			virtual std::u32string What()const override;
		};
		static std::u32string ConvertFromUTF16ToUTF32(const std::u16string&);
		static std::u16string ConvertFromUTF32ToUTF16(const std::u32string&);
		static std::u8string ConvertFromUTF16ToUTF8(const std::u16string&);
		static std::u16string ConvertFromUTF8ToUTF16(const std::u8string&);
		static std::u32string ConvertFromUTF8ToUTF32(const std::u8string&);
		static std::u8string ConvertFromUTF32ToUTF8(const std::u32string&);
	};
}